/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * GestionVacunasPresentacion.java
 *
 * Created on 07/10/2010, 19:46:08
 */
package presentacion.vacuna;

import hibernate.objeto.AplicacionVacuna;
import hibernate.objeto.NombreComercialMedicamento;
import hibernate.objeto.Vacuna;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.RowFilter;
import javax.swing.table.TableRowSorter;
import logica.AplicacionVacunaLogica;
import logica.CapaLogica;
import logica.PeriodoAplicacionVacunaLogica;
import logica.VacunaLogica;
import logica.validacion.AplicacionVacunaValidacion;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.GestionPacientePresentacion;
import presentacion.acceso.RestriccionAcceso;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.maquetado.InformeError;
import presentacion.medicamento.GestionMedicamentoPresentacion;
import presentacion.utilidad.BarMenu;
import presentacion.utilidad.MensajePresentacion;
import presentacion.utilidad.Paginador;
import presentacion.utilidad.PopUpMenu;
import presentacion.utilidad.tabla.MiModeloTabla;

/**
 *
 * @author Gonzalo
 */
public class AplicacionVacunaPresentacion extends javax.swing.JDialog {

    /** Creates new form GestionVacunasPresentacion */
    public AplicacionVacunaPresentacion( 
            java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        
        initComponents();

        personalizarGUI();
        setSize(CapaPresentacion.getTamañoMaximoJDialog());
        setLocationRelativeTo(null);  
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI( ) {
        //Crea la barra de menu
        this.setJMenuBar(BarMenu.createMenuBarAplicacionVacuna(this));

        iniciarPaginador();

        cargarTablaAplicacionVacuna();

        cargarTablaVacuna();
        
        botonCargarAplicacionVacuna.setVisible(false);
        tablaVacunaScrollPane.setVisible(true);
        textoFiltrarVacuna.setVisible(true);
        filtrarVacuna.setVisible(true);
        textoInformativoCargaTabla.setVisible(true);
        botonAgregarVacuna.setVisible(true);
        MiModeloTabla.cargarTablaVacuna(VacunaLogica.getVectorVacunaEnBd(),
                tablaVacuna);
        fechaAplicacion.setDate(new Date());

        if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
    }

    /**
     * Setea la ventana en modo visualización.
     *
     */
    private void modoVisualizacion() {
        quitarTablaVacuna();
        limpiarPantalla();
        textoDescriptivoCargaAplicacionVacuna.setText("Seleccione una"
                + " aplicación para ver sus propiedades");
        CapaPresentacion.personalizarBotonesEnVisualizacion(
                botonAceptar, botonCancelar);
        botonCargarAplicacionVacuna.setEnabled(false);
        botonCancelar.requestFocus();
        setearEstadoCampos(false);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelVisualizacionAplicacionVacuna = new javax.swing.JPanel();
        textoDescriptivoVisualizacionAplicacionVacuna = new javax.swing.JLabel();
        textoFiltrar = new javax.swing.JLabel();
        filtrarAplicacionVacuna = new javax.swing.JTextField();
        tablaAplicacionVacunaScrollPane = new javax.swing.JScrollPane();
        tablaAplicacionVacuna = new javax.swing.JTable(new MiModeloTabla());
        paginadorUno1 = new javax.swing.JPanel();
        botonAnteriorPaginadorDos = new javax.swing.JButton();
        botonSiguientePaginadorDos = new javax.swing.JButton();
        textoDescriptivoCargaAplicacionVacuna = new javax.swing.JLabel();
        botonCargarAplicacionVacuna = new javax.swing.JButton();
        panelCargaAplicacionVacuna = new javax.swing.JPanel();
        textoFechaAplicacion = new javax.swing.JLabel();
        fechaAplicacion = new com.toedter.calendar.JDateChooser();
        botonMedicamento = new javax.swing.JButton();
        nombreMedicamento = new javax.swing.JLabel();
        esAntecedente = new javax.swing.JCheckBox();
        textoLote = new javax.swing.JLabel();
        lote = new javax.swing.JTextField();
        textoPartida = new javax.swing.JLabel();
        partida = new javax.swing.JTextField();
        textoAnioVencimiento = new javax.swing.JLabel();
        textoMesVencimiento = new javax.swing.JLabel();
        textoPeriodoDeAplicacion = new javax.swing.JLabel();
        periodoDeAplicacion = new javax.swing.JComboBox();
        mesVencimiento = new com.toedter.calendar.JMonthChooser();
        anioVencimiento = new com.toedter.calendar.JYearChooser();
        filtrarVacuna = new javax.swing.JTextField();
        textoFiltrarVacuna = new javax.swing.JLabel();
        tablaVacunaScrollPane = new javax.swing.JScrollPane();
        tablaVacuna = new javax.swing.JTable(new MiModeloTabla());
        textoInformativoCargaTabla = new javax.swing.JLabel();
        botonAgregarVacuna = new javax.swing.JButton();
        paginadorUno = new javax.swing.JPanel();
        botonAnteriorPaginadorUno = new javax.swing.JButton();
        botonSiguientePaginadorUno = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        jSeparator2 = new javax.swing.JSeparator();
        botonAceptar = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Vacunación");
        setMinimumSize(new java.awt.Dimension(1024, 720));
        setResizable(false);

        panelVisualizacionAplicacionVacuna.setMinimumSize(new java.awt.Dimension(1004, 156));
        panelVisualizacionAplicacionVacuna.setPreferredSize(new java.awt.Dimension(1004, 156));

        textoDescriptivoVisualizacionAplicacionVacuna.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVisualizacionAplicacionVacuna.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVisualizacionAplicacionVacuna.setText("Lista de vacunas que posee el paciente");
        textoDescriptivoVisualizacionAplicacionVacuna.setPreferredSize(new java.awt.Dimension(500, 20));

        textoFiltrar.setFont(Fuente.FUENTE_LABEL);
        textoFiltrar.setForeground(Fuente.COLOR_NORMAL);
        textoFiltrar.setText("Filtrar");
        textoFiltrar.setPreferredSize(new java.awt.Dimension(28, 20));

        filtrarAplicacionVacuna.setFont(Fuente.FUENTE_TEXTFIELD);
        filtrarAplicacionVacuna.setForeground(Fuente.COLOR_NORMAL);
        filtrarAplicacionVacuna.setToolTipText("Filtra los datos encontrados por algún criterio");
        filtrarAplicacionVacuna.setNextFocusableComponent(botonAnteriorPaginadorDos);
        filtrarAplicacionVacuna.setPreferredSize(new java.awt.Dimension(200, 20));
        filtrarAplicacionVacuna.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                filtrarAplicacionVacunaKeyReleased(evt);
            }
        });

        tablaAplicacionVacunaScrollPane.setPreferredSize(new java.awt.Dimension(860, 210));

        tablaAplicacionVacuna.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaAplicacionVacunaMouseClicked(evt);
            }
        });
        tablaAplicacionVacuna.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tablaAplicacionVacunaKeyReleased(evt);
            }
        });
        tablaAplicacionVacunaScrollPane.setViewportView(tablaAplicacionVacuna);
        MiModeloTabla.inicializarTabla(tablaAplicacionVacuna);

        paginadorUno1.setMaximumSize(new java.awt.Dimension(700, 14));

        botonAnteriorPaginadorDos.setFont(new java.awt.Font("Tahoma", 0, 10));
        botonAnteriorPaginadorDos.setIcon(Icono.ICONO_16_ANTERIOR);
        botonAnteriorPaginadorDos.setPreferredSize(new java.awt.Dimension(43, 23));
        botonAnteriorPaginadorDos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAnteriorPaginadorDosActionPerformed(evt);
            }
        });

        botonSiguientePaginadorDos.setFont(new java.awt.Font("Tahoma", 0, 10));
        botonSiguientePaginadorDos.setIcon(Icono.ICONO_16_SIGUIENTE);
        botonSiguientePaginadorDos.setPreferredSize(new java.awt.Dimension(43, 23));
        botonSiguientePaginadorDos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSiguientePaginadorDosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout paginadorUno1Layout = new javax.swing.GroupLayout(paginadorUno1);
        paginadorUno1.setLayout(paginadorUno1Layout);
        paginadorUno1Layout.setHorizontalGroup(
            paginadorUno1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(paginadorUno1Layout.createSequentialGroup()
                .addComponent(botonAnteriorPaginadorDos, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(botonSiguientePaginadorDos, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        paginadorUno1Layout.setVerticalGroup(
            paginadorUno1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(paginadorUno1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(botonAnteriorPaginadorDos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(botonSiguientePaginadorDos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        javax.swing.GroupLayout panelVisualizacionAplicacionVacunaLayout = new javax.swing.GroupLayout(panelVisualizacionAplicacionVacuna);
        panelVisualizacionAplicacionVacuna.setLayout(panelVisualizacionAplicacionVacunaLayout);
        panelVisualizacionAplicacionVacunaLayout.setHorizontalGroup(
            panelVisualizacionAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelVisualizacionAplicacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelVisualizacionAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(tablaAplicacionVacunaScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 984, Short.MAX_VALUE)
                    .addGroup(panelVisualizacionAplicacionVacunaLayout.createSequentialGroup()
                        .addComponent(textoDescriptivoVisualizacionAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 252, Short.MAX_VALUE)
                        .addComponent(textoFiltrar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(filtrarAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(paginadorUno1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        panelVisualizacionAplicacionVacunaLayout.setVerticalGroup(
            panelVisualizacionAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelVisualizacionAplicacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelVisualizacionAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(filtrarAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoFiltrar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoDescriptivoVisualizacionAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(tablaAplicacionVacunaScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(paginadorUno1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        textoDescriptivoCargaAplicacionVacuna.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoCargaAplicacionVacuna.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoCargaAplicacionVacuna.setText("Ingrese los datos de la aplicación de la vacuna");
        textoDescriptivoCargaAplicacionVacuna.setMaximumSize(new java.awt.Dimension(284, 20));
        textoDescriptivoCargaAplicacionVacuna.setMinimumSize(new java.awt.Dimension(50, 14));
        textoDescriptivoCargaAplicacionVacuna.setPreferredSize(new java.awt.Dimension(500, 23));

        botonCargarAplicacionVacuna.setFont(Fuente.FUENTE_BOTON_INTERNO);
        botonCargarAplicacionVacuna.setForeground(Fuente.COLOR_NORMAL);
        botonCargarAplicacionVacuna.setIcon(Icono.ICONO_16_AGREGAR);
        botonCargarAplicacionVacuna.setText("Agregar aplicación");
        botonCargarAplicacionVacuna.setToolTipText("Agrega los datos para cargar una aplicación de una vacuna");
        botonCargarAplicacionVacuna.setPreferredSize(new java.awt.Dimension(175, 20));
        botonCargarAplicacionVacuna.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCargarAplicacionVacunaActionPerformed(evt);
            }
        });

        panelCargaAplicacionVacuna.setPreferredSize(new java.awt.Dimension(1004, 468));

        textoFechaAplicacion.setFont(Fuente.FUENTE_LABEL);
        textoFechaAplicacion.setForeground(Fuente.COLOR_NORMAL);
        textoFechaAplicacion.setText("Fecha de aplicación");
        textoFechaAplicacion.setPreferredSize(new java.awt.Dimension(115, 20));

        fechaAplicacion.setToolTipText("");
        fechaAplicacion.setMaxSelectableDate(new Date());
        fechaAplicacion.setMinSelectableDate(new java.util.Date(-2208985673000L));
        fechaAplicacion.setPreferredSize(new java.awt.Dimension(144, 20));

        botonMedicamento.setFont(Fuente.FUENTE_BOTON_INTERNO);
        botonMedicamento.setForeground(Fuente.COLOR_NORMAL);
        botonMedicamento.setText("Medicamento");
        botonMedicamento.setToolTipText("Seleccione el medicamento asociado");
        botonMedicamento.setNextFocusableComponent(botonAceptar);
        botonMedicamento.setPreferredSize(new java.awt.Dimension(95, 20));
        botonMedicamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonMedicamentoActionPerformed(evt);
            }
        });

        nombreMedicamento.setFont(Fuente.FUENTE_LABEL);
        nombreMedicamento.setForeground(Fuente.COLOR_NORMAL);
        nombreMedicamento.setPreferredSize(new java.awt.Dimension(144, 20));

        esAntecedente.setFont(Fuente.FUENTE_CHECKBOX);
        esAntecedente.setForeground(Fuente.COLOR_NORMAL);
        esAntecedente.setText("Es antecedente");
        esAntecedente.setPreferredSize(new java.awt.Dimension(115, 20));

        textoLote.setFont(Fuente.FUENTE_LABEL);
        textoLote.setForeground(Fuente.COLOR_NORMAL);
        textoLote.setText("Lote");
        textoLote.setPreferredSize(new java.awt.Dimension(115, 20));

        lote.setFont(Fuente.FUENTE_TEXTFIELD);
        lote.setForeground(Fuente.COLOR_NORMAL);
        lote.setNextFocusableComponent(partida);
        lote.setPreferredSize(new java.awt.Dimension(100, 20));

        textoPartida.setFont(Fuente.FUENTE_LABEL);
        textoPartida.setForeground(Fuente.COLOR_NORMAL);
        textoPartida.setText("Partida");
        textoPartida.setPreferredSize(new java.awt.Dimension(115, 20));

        partida.setFont(Fuente.FUENTE_TEXTFIELD);
        partida.setForeground(Fuente.COLOR_NORMAL);
        partida.setPreferredSize(new java.awt.Dimension(100, 20));

        textoAnioVencimiento.setFont(Fuente.FUENTE_LABEL);
        textoAnioVencimiento.setForeground(Fuente.COLOR_NORMAL);
        textoAnioVencimiento.setText("Año de vencimiento");
        textoAnioVencimiento.setPreferredSize(new java.awt.Dimension(115, 20));

        textoMesVencimiento.setFont(Fuente.FUENTE_LABEL);
        textoMesVencimiento.setForeground(Fuente.COLOR_NORMAL);
        textoMesVencimiento.setText("Mes de vencimiento");
        textoMesVencimiento.setPreferredSize(new java.awt.Dimension(115, 20));

        textoPeriodoDeAplicacion.setFont(Fuente.FUENTE_LABEL);
        textoPeriodoDeAplicacion.setForeground(Fuente.COLOR_NORMAL);
        textoPeriodoDeAplicacion.setText("Período de aplicación");
        textoPeriodoDeAplicacion.setPreferredSize(new java.awt.Dimension(115, 20));

        periodoDeAplicacion.setFont(Fuente.FUENTE_COMBOBOX);
        periodoDeAplicacion.setForeground(Fuente.COLOR_NORMAL);
        periodoDeAplicacion.setPreferredSize(new java.awt.Dimension(200, 20));

        mesVencimiento.setForeground(Fuente.COLOR_NORMAL);

        anioVencimiento.setForeground(Fuente.COLOR_NORMAL);
        anioVencimiento.setNextFocusableComponent(botonMedicamento);
        anioVencimiento.setPreferredSize(new java.awt.Dimension(99, 20));

        filtrarVacuna.setFont(Fuente.FUENTE_TEXTFIELD);
        filtrarVacuna.setForeground(Fuente.COLOR_NORMAL);
        filtrarVacuna.setToolTipText("Filtra los datos encontrados por algún criterio");
        filtrarVacuna.setNextFocusableComponent(periodoDeAplicacion);
        filtrarVacuna.setPreferredSize(new java.awt.Dimension(200, 20));
        filtrarVacuna.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                filtrarVacunaKeyReleased(evt);
            }
        });

        textoFiltrarVacuna.setFont(Fuente.FUENTE_LABEL);
        textoFiltrarVacuna.setForeground(Fuente.COLOR_NORMAL);
        textoFiltrarVacuna.setText("Filtrar");
        textoFiltrarVacuna.setPreferredSize(new java.awt.Dimension(28, 20));

        tablaVacunaScrollPane.setMinimumSize(new java.awt.Dimension(351, 50));
        tablaVacunaScrollPane.setPreferredSize(new java.awt.Dimension(910, 90));

        tablaVacuna.setToolTipText("Click derecho para más opciones");
        tablaVacuna.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaVacunaverCaracteristicasMouseClicked(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tablaVacunaMouseReleased(evt);
            }
        });
        tablaVacuna.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tablaVacunaKeyReleased(evt);
            }
        });
        tablaVacunaScrollPane.setViewportView(tablaVacuna);
        MiModeloTabla.inicializarTabla(tablaVacuna);

        textoInformativoCargaTabla.setFont(Fuente.FUENTE_TITULO_3);
        textoInformativoCargaTabla.setForeground(Fuente.COLOR_NORMAL);
        textoInformativoCargaTabla.setText("Seleccione la vacuna a aplicar");
        textoInformativoCargaTabla.setPreferredSize(new java.awt.Dimension(500, 20));

        botonAgregarVacuna.setFont(Fuente.FUENTE_BOTON_INTERNO);
        botonAgregarVacuna.setForeground(Fuente.COLOR_NORMAL);
        botonAgregarVacuna.setIcon(Icono.ICONO_16_AGREGAR);
        botonAgregarVacuna.setText("Agregar vacuna");
        botonAgregarVacuna.setToolTipText("Agrega una nueva vacuna");
        botonAgregarVacuna.setPreferredSize(new java.awt.Dimension(175, 20));
        botonAgregarVacuna.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAgregarVacunaActionPerformed(evt);
            }
        });

        paginadorUno.setMaximumSize(new java.awt.Dimension(700, 14));

        botonAnteriorPaginadorUno.setFont(new java.awt.Font("Tahoma", 0, 10));
        botonAnteriorPaginadorUno.setIcon(Icono.ICONO_16_ANTERIOR);
        botonAnteriorPaginadorUno.setPreferredSize(new java.awt.Dimension(43, 23));
        botonAnteriorPaginadorUno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAnteriorPaginadorUnoActionPerformed(evt);
            }
        });

        botonSiguientePaginadorUno.setFont(new java.awt.Font("Tahoma", 0, 10));
        botonSiguientePaginadorUno.setIcon(Icono.ICONO_16_SIGUIENTE);
        botonSiguientePaginadorUno.setPreferredSize(new java.awt.Dimension(43, 23));
        botonSiguientePaginadorUno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSiguientePaginadorUnoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout paginadorUnoLayout = new javax.swing.GroupLayout(paginadorUno);
        paginadorUno.setLayout(paginadorUnoLayout);
        paginadorUnoLayout.setHorizontalGroup(
            paginadorUnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(paginadorUnoLayout.createSequentialGroup()
                .addComponent(botonAnteriorPaginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(botonSiguientePaginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        paginadorUnoLayout.setVerticalGroup(
            paginadorUnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(paginadorUnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(botonAnteriorPaginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(botonSiguientePaginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL);

        javax.swing.GroupLayout panelCargaAplicacionVacunaLayout = new javax.swing.GroupLayout(panelCargaAplicacionVacuna);
        panelCargaAplicacionVacuna.setLayout(panelCargaAplicacionVacunaLayout);
        panelCargaAplicacionVacunaLayout.setHorizontalGroup(
            panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(tablaVacunaScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 984, Short.MAX_VALUE)
                    .addComponent(textoInformativoCargaTabla, javax.swing.GroupLayout.DEFAULT_SIZE, 984, Short.MAX_VALUE)
                    .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                        .addComponent(botonAgregarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 577, Short.MAX_VALUE)
                        .addComponent(textoFiltrarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(filtrarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelCargaAplicacionVacunaLayout.createSequentialGroup()
                        .addComponent(textoPeriodoDeAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(periodoDeAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(esAntecedente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 436, Short.MAX_VALUE)
                        .addComponent(paginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 984, Short.MAX_VALUE)
                    .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                                .addComponent(textoLote, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lote, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(textoMesVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(textoAnioVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(anioVencimiento, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(mesVencimiento, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE)))
                            .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(textoFechaAplicacion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(textoPartida, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(partida, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(fechaAplicacion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 12, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonMedicamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(nombreMedicamento, javax.swing.GroupLayout.DEFAULT_SIZE, 592, Short.MAX_VALUE)))
                .addContainerGap())
        );
        panelCargaAplicacionVacunaLayout.setVerticalGroup(
            panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textoInformativoCargaTabla, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonAgregarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(filtrarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoFiltrarVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(tablaVacunaScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(paginadorUno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(textoPeriodoDeAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(periodoDeAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(esAntecedente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(panelCargaAplicacionVacunaLayout.createSequentialGroup()
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(textoLote, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lote, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(textoPartida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(partida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(textoFechaAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(fechaAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(11, 11, 11)
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(textoMesVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(mesVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(panelCargaAplicacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(anioVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(textoAnioVencimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(botonMedicamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(nombreMedicamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jSeparator2))
                .addContainerGap(108, Short.MAX_VALUE))
        );

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega la aplicación de la vacuna");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(panelCargaAplicacionVacuna, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panelVisualizacionAplicacionVacuna, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(textoDescriptivoCargaAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 329, Short.MAX_VALUE)
                        .addComponent(botonCargarAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelVisualizacionAplicacionVacuna, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoDescriptivoCargaAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonCargarAplicacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelCargaAplicacionVacuna, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void filtrarAplicacionVacunaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_filtrarAplicacionVacunaKeyReleased
        TableRowSorter<MiModeloTabla> sorter = new TableRowSorter<MiModeloTabla>((MiModeloTabla) tablaAplicacionVacuna.getModel());

        tablaAplicacionVacuna.setRowSorter(sorter);
        String texto = filtrarAplicacionVacuna.getText();
        if (texto.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            sorter.setRowFilter(RowFilter.regexFilter("(?i).*" + texto + ".*"));
        }
}//GEN-LAST:event_filtrarAplicacionVacunaKeyReleased

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        //Resetea paginador
        Paginador.paginarElemento[1] = false;
        agregarAplicacionVacuna();
}//GEN-LAST:event_botonAceptarActionPerformed

    private void tablaAplicacionVacunaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaAplicacionVacunaMouseClicked
        cargarOVerPropiedadesAplicacionVacuna();
    }//GEN-LAST:event_tablaAplicacionVacunaMouseClicked

    private void botonMedicamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonMedicamentoActionPerformed
        RestriccionAcceso.GestionMedicamentoPresentacion(null, true, false);

        //Completa el campo con el medicamento seleccionado
        NombreComercialMedicamento medicamentoSeleccionadoDeTabla =
                GestionMedicamentoPresentacion.getNombreComercialSeleccionado();

        //Setea la enfermedad seleccionada
        medicamentoSeleccionado = medicamentoSeleccionadoDeTabla;
        if (medicamentoSeleccionado != null) {
        nombreMedicamento.setToolTipText(medicamentoSeleccionado.
                getNombreNombreComercialMedicamento());
        }

        if (medicamentoSeleccionado != null) {
            nombreMedicamento.setText(medicamentoSeleccionadoDeTabla.
                    getNombreNombreComercialMedicamento());
        }
        nombreMedicamento.setToolTipText(nombreMedicamento.getText());
}//GEN-LAST:event_botonMedicamentoActionPerformed

    private void botonCargarAplicacionVacunaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCargarAplicacionVacunaActionPerformed
        habilitarCarga();
}//GEN-LAST:event_botonCargarAplicacionVacunaActionPerformed

    private void filtrarVacunaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_filtrarVacunaKeyReleased
        TableRowSorter<MiModeloTabla> sorter = new TableRowSorter<MiModeloTabla>(
                (MiModeloTabla) tablaVacuna.getModel());

        tablaVacuna.setRowSorter(sorter);
        String texto = filtrarAplicacionVacuna.getText();
        if (texto.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            sorter.setRowFilter(RowFilter.regexFilter("(?i).*" + texto + ".*"));
        }
}//GEN-LAST:event_filtrarVacunaKeyReleased

    private void tablaVacunaverCaracteristicasMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaVacunaverCaracteristicasMouseClicked
        if (evt.getClickCount() == 2
                && evt.getButton() == 1) {
            propiedadesVacuna();
        } else if (evt.getButton() == 3) {
            PopUpMenu.createPopupMenuVacuna(tablaVacuna, null, this);
        }
}//GEN-LAST:event_tablaVacunaverCaracteristicasMouseClicked

    private void botonAgregarVacunaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAgregarVacunaActionPerformed
        Paginador.paginarElemento[0] = false;
        agregarVacuna();
}//GEN-LAST:event_botonAgregarVacunaActionPerformed

    private void tablaAplicacionVacunaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tablaAplicacionVacunaKeyReleased
        if (evt.getKeyCode() == KeyEvent.VK_UP
                || evt.getKeyCode() == KeyEvent.VK_DOWN) {
            cargarOVerPropiedadesAplicacionVacuna();
        }
    }//GEN-LAST:event_tablaAplicacionVacunaKeyReleased

    private void tablaVacunaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tablaVacunaKeyReleased
        if (evt.getKeyCode() == KeyEvent.VK_UP
                || evt.getKeyCode() == KeyEvent.VK_DOWN) {
            cargarPeriodosAplicacion();
        }
    }//GEN-LAST:event_tablaVacunaKeyReleased

    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        this.dispose();
    }//GEN-LAST:event_botonCancelarActionPerformed

    private void tablaVacunaMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaVacunaMouseReleased
        if (evt.getButton() == 1) {
            cargarPeriodosAplicacion();
        }
    }//GEN-LAST:event_tablaVacunaMouseReleased

    private void botonAnteriorPaginadorUnoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAnteriorPaginadorUnoActionPerformed
        paginarAtrasTablaVacuna();
}//GEN-LAST:event_botonAnteriorPaginadorUnoActionPerformed

    private void botonSiguientePaginadorUnoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonSiguientePaginadorUnoActionPerformed
        paginarAdelanteTablaVacuna();
}//GEN-LAST:event_botonSiguientePaginadorUnoActionPerformed

    private void botonAnteriorPaginadorDosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAnteriorPaginadorDosActionPerformed
        paginarAtrasTablaAplicacionVacuna();
}//GEN-LAST:event_botonAnteriorPaginadorDosActionPerformed

    private void botonSiguientePaginadorDosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonSiguientePaginadorDosActionPerformed
        paginarAdelanteTablaAplicacionVacuna();
}//GEN-LAST:event_botonSiguientePaginadorDosActionPerformed

    /**
     * Setea un campo a habilitado o inhabilitado según el parámetro.
     *
     * @param estado El estado a setear
     */
    private void setearEstadoCampos(boolean estado) {
        filtrarVacuna.setEnabled(estado);
        tablaVacuna.setEnabled(estado);
        periodoDeAplicacion.setEnabled(estado);
        botonMedicamento.setEnabled(estado);
        fechaAplicacion.setEnabled(estado);
        esAntecedente.setEnabled(estado);
        lote.setEnabled(estado);
        partida.setEnabled(estado);
        anioVencimiento.setEnabled(estado);
        mesVencimiento.setEnabled(estado);
    }

    /**
     * Limpia pantalla.
     */
    private void limpiarPantalla() {
        filtrarVacuna.setText("");
        nombreMedicamento.setText("");
        fechaAplicacion.setDate(new Date());
        esAntecedente.setSelected(false);
        lote.setText("");
        partida.setText("");
        anioVencimiento.setYear(new Date().getYear() + 1900);
        mesVencimiento.setMonth(new Date().getMonth());
    }

    /**
     * Se vuelven a colores normales los textos de la carga, por si algún error
     * se dió en otra selección.
     */
    private void reiniciarColorTextosCargaAplicacionVacuna() {
        textoFechaAplicacion.setForeground(Fuente.COLOR_NORMAL);
        textoLote.setForeground(Fuente.COLOR_NORMAL);
        textoPartida.setForeground(Fuente.COLOR_NORMAL);
        textoAnioVencimiento.setForeground(Fuente.COLOR_NORMAL);
        textoMesVencimiento.setForeground(Fuente.COLOR_NORMAL);
        textoPeriodoDeAplicacion.setForeground(Fuente.COLOR_NORMAL);
        textoInformativoCargaTabla.setForeground(Fuente.COLOR_NORMAL);
        botonMedicamento.setForeground(Fuente.COLOR_NORMAL);
    }

    /**
     * Al seleccionar una objeto AplicacionVacuna de la tabla deben
     * inhabilitarse los campos de carga. Si el objeto es nulo se permite el
     * ingresos de los datos
     */
    private void cargarOVerPropiedadesAplicacionVacuna() {
        //Reinicia el color de los textos
        reiniciarColorTextosCargaAplicacionVacuna();

        //Recupera lo seleccionado de tabla
        aplicacionVacunaAVisualizar = (AplicacionVacuna) MiModeloTabla.
                recuperarObjetoDeTabla(AplicacionVacuna.class.getName(),
                tablaAplicacionVacuna);

        if (aplicacionVacunaAVisualizar == null &&
                CapaPresentacion.modoCarga) {
            habilitarCarga();
            botonCargarAplicacionVacuna.setVisible(false);
        } else if (aplicacionVacunaAVisualizar == null &&
                CapaPresentacion.modoVisualizacion) {
            quitarTablaVacuna();
            limpiarPantalla();            
            textoDescriptivoCargaAplicacionVacuna.setText("Seleccione una" + 
                " aplicación para ver sus propiedades");
            botonCargarAplicacionVacuna.setVisible(false);
        } else if (aplicacionVacunaAVisualizar != null && (
                CapaPresentacion.modoModificacion)) {
            habilitarModificacion();
            botonCargarAplicacionVacuna.setVisible(true);
        } else if (aplicacionVacunaAVisualizar != null &&
                CapaPresentacion.modoVisualizacion) {
            habilitarVisualizacion();
            botonCargarAplicacionVacuna.setVisible(false);
        }
    }

    /**
     * Habilita los campos necesarios para cargar una
     * interconsultaEnfermedad
     */
    public void habilitarCarga() {
        if (CapaPresentacion.modoCarga || CapaPresentacion.modoModificacion) {
            aplicacionVacunaAVisualizar = null;
            setearEstadoCampos(true);
            limpiarPantalla();
            paginadorUno.setVisible(true);
            tablaVacunaScrollPane.setVisible(true);
            textoFiltrarVacuna.setVisible(true);
            filtrarVacuna.setVisible(true);
            textoInformativoCargaTabla.setVisible(true);
            botonAgregarVacuna.setVisible(true);
            //Deselecciona lo seleccionado en la tabla
            tablaAplicacionVacuna.clearSelection();
            botonAceptar.setVisible(true);
            textoDescriptivoCargaAplicacionVacuna.setText("Ingrese los datos de"
                    + " la aplicación de la vacuna");
        }
    }

    /**
     * Habilita los campos necesarios para visualizar propiedades de la
     * interconsultaEnfermedad
     */
    private void habilitarVisualizacion() {
        setearEstadoCampos(false);
        exhibirDatosEnPantalla();
        quitarTablaVacuna();
        CapaPresentacion.personalizarBotonesEnVisualizacion(
                botonAceptar, botonCancelar);
    }

    /**
     * Habilita los campos necesarios para modificar propiedades de la
     * interconsultaEnfermedad
     */
    private void habilitarModificacion() {
        setearEstadoCampos(true);
        exhibirDatosEnPantalla();
        vacuna = aplicacionVacunaAVisualizar.getPeriodoAplicacionVacuna().getVacuna();
        String nombre = vacuna.getNombreVacuna();
        
        if (vacuna != null) {
            Paginador.paginarElemento[0] = false;
            cargarTablaVacuna();
            while (!MiModeloTabla.seleccionarFilaDeTabla(
                    String.valueOf(vacuna.
                    getIdVacuna()), tablaVacuna, tablaVacunaScrollPane)) {
                paginarAdelanteTablaVacuna();
            }
            cargarPeriodosAplicacion();
        }
        periodoDeAplicacion.getModel().setSelectedItem((
                    String) aplicacionVacunaAVisualizar.getPeriodoAplicacionVacuna().
                    getDescripcionPeriodoAplicacionVacuna());
        CapaPresentacion.personalizarBotonesEnCargaDeDatos(
                botonAceptar, botonCancelar);
    }

    /**
     * Exhibe los datos de la aplicacion vacuna seleccionada en pantalla.
     */
    private void exhibirDatosEnPantalla() {
        if (aplicacionVacunaAVisualizar != null) {
            fechaAplicacion.setDate(
                    aplicacionVacunaAVisualizar.getFechaPeriodoAplicacionVacuna());
            if (aplicacionVacunaAVisualizar.getEsAntecedenteAplicacionVacuna().
                    equalsIgnoreCase("si")) {
                esAntecedente.setSelected(true);
            }
            nombreMedicamento.setText(aplicacionVacunaAVisualizar.
                    getNombreComercialMedicamento().
                    getNombreNombreComercialMedicamento());
            periodoDeAplicacion.getModel().setSelectedItem((
                    String) aplicacionVacunaAVisualizar.getPeriodoAplicacionVacuna().
                    getDescripcionPeriodoAplicacionVacuna());
            lote.setText(aplicacionVacunaAVisualizar.getLoteAplicacionVacuna());
            lote.setCaretPosition(0);
            partida.setText(aplicacionVacunaAVisualizar.getPartidaAplicacionVacuna());
            partida.setCaretPosition(0);
            anioVencimiento.setValue(aplicacionVacunaAVisualizar.
                    getAnioVencimientoAplicacionVacuna());
            mesVencimiento.setMonth(CapaPresentacion.getMesEnIntPorString(
                    aplicacionVacunaAVisualizar.getMesVencimientoAplicacionVacuna()));
        }
    }

    private void quitarTablaVacuna() {
        if (aplicacionVacunaAVisualizar != null &&
                aplicacionVacunaAVisualizar.getPeriodoAplicacionVacuna() != null) {
            textoDescriptivoCargaAplicacionVacuna.setText("Vacuna: "
                + aplicacionVacunaAVisualizar.getPeriodoAplicacionVacuna().
                getVacuna().getNombreVacuna());
        } else {
            textoDescriptivoCargaAplicacionVacuna.setText("Vacuna: ");
        }
        tablaVacunaScrollPane.setVisible(false);
        textoFiltrarVacuna.setVisible(false);
        textoInformativoCargaTabla.setVisible(false);
        botonAgregarVacuna.setVisible(false);
        filtrarVacuna.setVisible(false);
        paginadorUno.setVisible(false);
    }

    /**
     * Agrega una aplicación de vacuna a la base de datos.
     *
     */
    private void agregarAplicacionVacuna() {
        //Si la aplicación no existe en la bd para un paciente, vacuna y
        //período de aplicación dados
        if (esAplicacionUnica()) {
            //Valida los campos
            if (validarCamposAplicacion()) {
                if (confirmarModificacion()) {
                    //Carga toda la información de la pantalla
                    recopilarInformacion();
                    int[] idAplicacionVacuna = new int[1];
                    if (aplicacionVacunaAVisualizar != null) {
                            //Modificación de tratamientoYPractica
                            idAplicacionVacuna[0] =
                                    aplicacionVacunaAVisualizar.
                                    getIdAplicacionVacuna();
                        } else {
                            //Alta de tratamientoYPractica
                            idAplicacionVacuna[0] = -1;
                        }
                    if ((AplicacionVacunaLogica.agregarOModificarAplicacion(
                            datosAplicacion, vacuna.getNombreVacuna(),
                            GestionPacientePresentacion.getPaciente(),
                            aplicacionVacunaAVisualizar,
                            idAplicacionVacuna))) {
                        aplicacionVacunaACargar =
                                AplicacionVacunaLogica.
                                getAplicacionVacunaPorIdEnBd(idAplicacionVacuna[0]);
                                actualizarNuevaCargaAplicacion();
                    }
                }
            } else {
                MensajePresentacion.errorDatosInvalidos();
            }
        } else {
            MensajePresentacion.errorDuplicidadObjeto("La aplicación");
        }
    }

    /**
     * En caso de tratarse de una madificación debe verificarse que realmente
     * se quiera modificar.
     *
     * @return true si se debe modificar, false en caso contrario
     */
    public boolean confirmarModificacion() {
        boolean retorno = false;
        if (aplicacionVacunaAVisualizar != null) {
            //Confirmar modificación
            int confirmado = MensajePresentacion.confimarModificacionObjeto(
                    "aplicación vacuna", "la");
            if (JOptionPane.OK_OPTION == confirmado) {
                retorno = true;
            } else {
                retorno = false;
            }
        } else {
            retorno = true;
        }

        return retorno;
    }

    /**
     * Visualiza las propiedades de la vacuna
     */
    public void propiedadesVacuna() {
        Vacuna vacunaRecuperada = (Vacuna) MiModeloTabla.recuperarObjetoDeTabla(
                Vacuna.class.getName(), tablaVacuna);
        if (vacunaRecuperada != null) {
            RestriccionAcceso.VacunaPresentacion(null, true, vacunaRecuperada);
            
            MiModeloTabla.cargarTablaVacuna(VacunaLogica.
                    getVectorVacunaEnBd(), tablaVacuna);
            MiModeloTabla.seleccionarFilaDeTabla(String.valueOf(
                    vacunaRecuperada.getIdVacuna()), tablaVacuna, tablaVacunaScrollPane);
        }
    }
    
    /**
     * Valida los campos a ingresar
     * @return true si son campos válidos false en caso contrario
     */
    private boolean validarCamposAplicacion() {
        boolean fechaAplicacionRetorno = true;
        boolean nombreMedicamentoRetorno = true;
        boolean periodoAplicacionRetorno = true;
        boolean loteRetorno = true;
        boolean partidaRetorno = true;
        boolean anioRetorno = true;
        boolean mesRetorno = true;
        boolean nombreVacunaRetorno = true;

        //Manejo de la validación de la fecha de aplicación
        if (!CapaValidacion.validarFecha(fechaAplicacion.getDate(), "",
                true)) {
            fechaAplicacionRetorno = false;
            textoFechaAplicacion.setForeground(
                    Fuente.COLOR_ERROR);
            textoFechaAplicacion.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_FECHA);
        } else {
            fechaAplicacionRetorno = true;
            textoFechaAplicacion.setForeground(Fuente.COLOR_NORMAL);
            textoFechaAplicacion.setToolTipText(null);
        }

        //Manejo de la validación del nombre de medicamento
        if (!CapaValidacion.validarCampoObligatorio(
                nombreMedicamento.getText())) {
            nombreMedicamentoRetorno = false;
            botonMedicamento.setForeground(
                    Fuente.COLOR_ERROR);
            botonMedicamento.setToolTipText(InformeError.
                    INFORME_ERROR_MEDICAMENTO_NOMBRE_COMERCIAL_SELECCION_BOTON);
        } else {
            nombreMedicamentoRetorno = true;
            botonMedicamento.setForeground(Fuente.COLOR_NORMAL);
            botonMedicamento.setToolTipText(null);
        }

        //Manejo de la validación del período de aplicación
        if (periodoDeAplicacion.getSelectedItem() != null) {
            if (!CapaValidacion.validarCampoObligatorio(
                    periodoDeAplicacion.getSelectedItem().toString())) {
                textoPeriodoDeAplicacion.setForeground(
                        Fuente.COLOR_ERROR);
                periodoAplicacionRetorno = false;
                textoPeriodoDeAplicacion.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_PERIODO_APLICACION);
            } else {
                textoPeriodoDeAplicacion.setForeground(Fuente.COLOR_NORMAL);
                periodoAplicacionRetorno = true;
                textoPeriodoDeAplicacion.setToolTipText(null);
            }
        } else {
            textoPeriodoDeAplicacion.setForeground(
                    Fuente.COLOR_ERROR);
            periodoAplicacionRetorno = false;
            textoPeriodoDeAplicacion.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_PERIODO_APLICACION);
        }

        //Manejo de la validación del lote
        if (!CapaValidacion.validarCampoObligatorio(
                lote.getText())) {
            textoLote.setForeground(
                    Fuente.COLOR_ERROR);
            textoLote.setToolTipText(InformeError.
                    INFORME_ERROR_APLICACION_VACUNA_LOTE);
            loteRetorno = false;
        } else {
            textoLote.setForeground(Fuente.COLOR_NORMAL);
            textoLote.setToolTipText(null);
            loteRetorno = true;
        }

        //Manejo de la validación de la partida
        if (!CapaValidacion.validarCampoObligatorio(partida.getText())) {
            textoPartida.setForeground(
                    Fuente.COLOR_ERROR);
            textoPartida.setToolTipText(InformeError.
                    INFORME_ERROR_APLICACION_VACUNA_PARTIDA);
            partidaRetorno = false;
        } else {
            textoPartida.setForeground(Fuente.COLOR_NORMAL);
            textoPartida.setToolTipText(null);
            partidaRetorno = true;
        }

        //Manejo de la validación del año de vencimiento
        if (!AplicacionVacunaValidacion.validarAnioVencimiento(
                String.valueOf(anioVencimiento.getYear()), true)) {
            textoAnioVencimiento.setForeground(
                    Fuente.COLOR_ERROR);
            textoAnioVencimiento.setToolTipText(InformeError.
                    INFORME_ERROR_APLICACION_VACUNA_ANIO_VENCIMIENTO);
            anioRetorno = false;
        } else {
            textoAnioVencimiento.setForeground(Fuente.COLOR_NORMAL);
            anioRetorno = true;
            textoAnioVencimiento.setToolTipText(null);
        }

        //Manejo de la validación del mes de vencimiento
        if (!AplicacionVacunaValidacion.validarMesVencimiento(
                CapaPresentacion.getMesEnStringPorInt(
                mesVencimiento.getMonth()), String.valueOf(
                anioVencimiento.getYear()), true)) {
            textoMesVencimiento.setForeground(
                    Fuente.COLOR_ERROR);
            textoMesVencimiento.setToolTipText(InformeError.
                    INFORME_ERROR_APLICACION_VACUNA_MES_VENCIMIENTO);
            mesRetorno = false;
        } else {
            textoMesVencimiento.setForeground(Fuente.COLOR_NORMAL);
            textoMesVencimiento.setToolTipText(null);
            mesRetorno = true;
        }

        //Manejo de la validación del nombre de la vacuna
        if (MiModeloTabla.recuperarObjetoDeTabla(String.
                valueOf(Vacuna.class.getName()), tablaVacuna) == null) {
            textoInformativoCargaTabla.setForeground(
                    Fuente.COLOR_ERROR);
            textoInformativoCargaTabla.setToolTipText(InformeError.
                    INFORME_ERROR_APLICACION_VACUNA_NOMBRE_VACUNA);
            nombreVacunaRetorno = false;
        } else {
            textoInformativoCargaTabla.setForeground(Fuente.COLOR_NORMAL);
            nombreVacunaRetorno = true;
            textoInformativoCargaTabla.setToolTipText(null);
        }

        return (fechaAplicacionRetorno
                && nombreMedicamentoRetorno && periodoAplicacionRetorno
                && loteRetorno && partidaRetorno
                && anioRetorno && mesRetorno && nombreVacunaRetorno);
    }

    /**
     * Recopila la información correspondiente
     */
    private void recopilarInformacion() {
        datosAplicacion = new Object[8];

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_FECHA] =
                fechaAplicacion.getDate();
        
        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_ES_ANTECEDENTE] =
                esAntecedente.isSelected();

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_NOMBRE_MEDICAMENTO] =
                medicamentoSeleccionado;

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_PERIODO_APLICACION] =
                periodoDeAplicacion.getSelectedItem().toString();

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_LOTE] =
                lote.getText();

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_PARTIDA] =
                partida.getText();

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_ANIO] =
                anioVencimiento.getValue();

        datosAplicacion[CapaLogica.APLICACIÓN_VACUNA_MES] =
                CapaPresentacion.getMesEnStringPorInt(mesVencimiento.getMonth());

    }

    /**
     * Valida si la aplicación es única para una vacuna, un período y un
     * paciente.
     *
     * @return true si es única false en caso contrario
     */
    private boolean esAplicacionUnica() {
        if (vacuna != null && periodoDeAplicacion != null) {
            if (aplicacionVacunaAVisualizar != null &&
                    (periodoDeAplicacion.getSelectedItem().toString().
                    equalsIgnoreCase(aplicacionVacunaAVisualizar.
                    getPeriodoAplicacionVacuna().
                    getDescripcionPeriodoAplicacionVacuna()) &&
                    vacuna.equals(
                    aplicacionVacunaAVisualizar.
                    getPeriodoAplicacionVacuna().getVacuna()))) {
                return true;
            } else if (AplicacionVacunaLogica.esUnica(vacuna.getNombreVacuna(),
                periodoDeAplicacion.getSelectedItem().toString(),
                GestionPacientePresentacion.getPaciente().getIdPaciente())) {
            return true;
            } else {
                return false;
            }
        } else {
            return true;
        }
    }

    /**
     * Agrega una nueva vacuna a la tabla de vacunas disponibles.
     */
    public void agregarVacuna() {
        RestriccionAcceso.VacunaPresentacion(null, true, null);
        
        cargarTablaVacuna();
        
        vacuna = VacunaPresentacion.getVacuna();
        if (vacuna != null) {
            while (!MiModeloTabla.seleccionarFilaDeTabla(
                    String.valueOf(vacuna.
                    getIdVacuna()), tablaVacuna, tablaVacunaScrollPane)) {
                paginarAdelanteTablaVacuna();
            }
            cargarPeriodosAplicacion();
        }
    }

    /**
     * Al agregarse una nueva aplicación se actualiza la tabla de aplicaciones
     * y se selecciona por defecto la aplicación agregada mostrandose las
     * propiedades de la misma.
     */
    private void actualizarNuevaCargaAplicacion() {
        cargarTablaVacuna();

        while(!MiModeloTabla.seleccionarFilaDeTabla(String.valueOf(
                aplicacionVacunaACargar.getIdAplicacionVacuna()),
                tablaAplicacionVacuna, tablaAplicacionVacunaScrollPane)) {
            paginarAdelanteTablaAplicacionVacuna();
        }
        cargarOVerPropiedadesAplicacionVacuna();
    }    

    /**
     * Carga el comboBox con los períodos de aplicación.
     *
     */
    private void cargarPeriodosAplicacion() {
        vacuna = (Vacuna) MiModeloTabla.recuperarObjetoDeTabla(
                    Vacuna.class.getName(), tablaVacuna);
            if (vacuna != null) {
                periodoDeAplicacion.setModel(CapaPresentacion.
                        getListaDePeriodosDeAplicacion(
                        PeriodoAplicacionVacunaLogica.
                        getVectorPeriodoAplicacionVacunaPorNombreVacuna(
                        vacuna.getNombreVacuna())));
            } else {
                periodoDeAplicacion.setModel(CapaPresentacion.
                        getListaDePeriodosDeAplicacion(null));
            }
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerPropiedadesVacuna = new KeyAdapter() {

            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    propiedadesVacuna();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerAceptar = new KeyAdapter() {

            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarAplicacionVacuna();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {

            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    dispose();
                }
            }
        };
        //Setear eventos
        tablaAplicacionVacuna.addKeyListener(keyListenerAceptar);
        tablaAplicacionVacuna.addKeyListener(keyListenerEscape);
        tablaVacuna.addKeyListener(keyListenerPropiedadesVacuna);
        tablaVacuna.addKeyListener(keyListenerEscape);

        botonAnteriorPaginadorUno.addKeyListener(keyListenerEscape);
        botonSiguientePaginadorUno.addKeyListener(keyListenerEscape);

        botonAnteriorPaginadorDos.addKeyListener(keyListenerEscape);
        botonSiguientePaginadorDos.addKeyListener(keyListenerEscape);

        filtrarAplicacionVacuna.addKeyListener(keyListenerEscape);
        filtrarVacuna.addKeyListener(keyListenerEscape);
        fechaAplicacion.addKeyListener(keyListenerEscape);
        lote.addKeyListener(keyListenerEscape);
        partida.addKeyListener(keyListenerEscape);
        mesVencimiento.addKeyListener(keyListenerEscape);
        anioVencimiento.addKeyListener(keyListenerEscape);

        periodoDeAplicacion.addKeyListener(keyListenerEscape);

        esAntecedente.addKeyListener(keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);
        botonAgregarVacuna.addKeyListener(keyListenerEscape);
        botonCargarAplicacionVacuna.addKeyListener(keyListenerEscape);
        botonMedicamento.addKeyListener(keyListenerEscape);
    }
    
    private void cargarTablaVacuna() {        
        //Si corresponde vuelve a cero el indice del paginador, de lo contrario
        //Lo deja en el valor que se encuentra
        Paginador.actualizaIndice(0);
        MiModeloTabla.cargarTablaVacuna(VacunaLogica.getVectorVacunaEnBd(),
                tablaVacuna);
    }
    
    private void cargarTablaAplicacionVacuna() {        
        //Si corresponde vuelve a cero el indice del paginador, de lo contrario
        //Lo deja en el valor que se encuentra
        Paginador.actualizaIndice(1);
        limpiarPantalla();
        this.vectorAplicacionVacuna =
                AplicacionVacunaLogica.getVectorAplicacionVacunaPorIdPaciente(
                GestionPacientePresentacion.getPaciente().getIdPaciente());
        MiModeloTabla.cargarTablaAplicacionVacuna(
                vectorAplicacionVacuna, tablaAplicacionVacuna);
    }

    /**
     * Inicia el/los paginadores activos en esta ventana
     */
    private void iniciarPaginador() {
        //Rango de filas para cada paginador
        int rangoFilas[] = new int[CapaLogica.PAGINADOR_PAGINADORES_SIMULTANEOS];

        //Rango de filas para el paginador 1
        rangoFilas[0] = 5;
        //Rango de filas para el paginador 2
        rangoFilas[1] = 10;
        //Rango de filas para el paginador 3
        rangoFilas[2] = 0;

        Paginador.inicializarPaginador(rangoFilas);
    }

    /**
     * Realiza la paginación hacia atrás.
     */
    private void paginarAtrasTablaVacuna() {
        //Retrocede el los índices
        Paginador.atrasPaginador(0);
        Paginador.paginarElemento[0] = true;

        //Vuelve a buscar con los nuevos índices
        if (tablaVacuna.getModel().getColumnCount() > 0) {
               cargarTablaVacuna();
        }
    }

    /**
     * Realiza la paginación hacia adelante, teniendo en cuenta que existan elementos,
     * de lo contrario no procede a listarlos.
     */
    private void paginarAdelanteTablaVacuna() {
        //Adelanta los índices
        Paginador.adelantePaginador(0);
        Paginador.paginarElemento[0] = true;

        //Vuelve a buscar con los nuevos índices
        if (tablaVacuna.getModel().getColumnCount() > 0) {
                //Si no hay elementos siguientes se vuelven los índices hacia atras
                if (VacunaLogica.getVectorVacunaEnBd() == null) {
                    Paginador.atrasPaginador(0);
                }
                cargarTablaVacuna();
        }
    }

    /**
     * Realiza la paginación hacia atrás.
     */
    private void paginarAtrasTablaAplicacionVacuna() {
        //Retrocede el los índices
        Paginador.atrasPaginador(1);
        Paginador.paginarElemento[1] = true;

        //Vuelve a buscar con los nuevos índices
        if (tablaVacuna.getModel().getColumnCount() > 0) {
               cargarTablaAplicacionVacuna();
        }
    }

    /**
     * Realiza la paginación hacia adelante, teniendo en cuenta que existan elementos,
     * de lo contrario no procede a listarlos.
     */
    private void paginarAdelanteTablaAplicacionVacuna() {
        //Adelanta los índices
        Paginador.adelantePaginador(1);
        Paginador.paginarElemento[1] = true;

        //Vuelve a buscar con los nuevos índices
        if (tablaVacuna.getModel().getColumnCount() > 0) {
                //Si no hay elementos siguientes se vuelven los índices hacia atras
                if (AplicacionVacunaLogica.getVectorAplicacionVacunaPorIdPaciente(
                GestionPacientePresentacion.getPaciente().getIdPaciente()) == null) {
                    Paginador.atrasPaginador(1);
                }
                cargarTablaAplicacionVacuna();
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.toedter.calendar.JYearChooser anioVencimiento;
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonAgregarVacuna;
    private javax.swing.JButton botonAnteriorPaginadorDos;
    private javax.swing.JButton botonAnteriorPaginadorUno;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JButton botonCargarAplicacionVacuna;
    private javax.swing.JButton botonMedicamento;
    private javax.swing.JButton botonSiguientePaginadorDos;
    private javax.swing.JButton botonSiguientePaginadorUno;
    private javax.swing.JCheckBox esAntecedente;
    private com.toedter.calendar.JDateChooser fechaAplicacion;
    private javax.swing.JTextField filtrarAplicacionVacuna;
    private javax.swing.JTextField filtrarVacuna;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTextField lote;
    private com.toedter.calendar.JMonthChooser mesVencimiento;
    private javax.swing.JLabel nombreMedicamento;
    private javax.swing.JPanel paginadorUno;
    private javax.swing.JPanel paginadorUno1;
    private javax.swing.JPanel panelCargaAplicacionVacuna;
    private javax.swing.JPanel panelVisualizacionAplicacionVacuna;
    private javax.swing.JTextField partida;
    private javax.swing.JComboBox periodoDeAplicacion;
    private javax.swing.JTable tablaAplicacionVacuna;
    private javax.swing.JScrollPane tablaAplicacionVacunaScrollPane;
    private javax.swing.JTable tablaVacuna;
    private javax.swing.JScrollPane tablaVacunaScrollPane;
    private javax.swing.JLabel textoAnioVencimiento;
    private javax.swing.JLabel textoDescriptivoCargaAplicacionVacuna;
    private javax.swing.JLabel textoDescriptivoVisualizacionAplicacionVacuna;
    private javax.swing.JLabel textoFechaAplicacion;
    private javax.swing.JLabel textoFiltrar;
    private javax.swing.JLabel textoFiltrarVacuna;
    private javax.swing.JLabel textoInformativoCargaTabla;
    private javax.swing.JLabel textoLote;
    private javax.swing.JLabel textoMesVencimiento;
    private javax.swing.JLabel textoPartida;
    private javax.swing.JLabel textoPeriodoDeAplicacion;
    // End of variables declaration//GEN-END:variables
    private Vector<AplicacionVacuna> vectorAplicacionVacuna;
    private static Vacuna vacuna;
    private AplicacionVacuna aplicacionVacunaAVisualizar;
    private AplicacionVacuna aplicacionVacunaACargar;
    private Object[] datosAplicacion;
    private NombreComercialMedicamento medicamentoSeleccionado;

}
